package com.gehj.androidlibs.transform;

import android.view.View;

import androidx.annotation.NonNull;
import androidx.viewpager.widget.ViewPager;

//启动页动画的编写
public class RotateTransformer implements ViewPager.PageTransformer {

    //透明度的变化
    private static final float MAX_ROTATE = 15f;

    //滑动画面的时候，通过position的值来看计算出滑动的动画
    @Override
    public void transformPage(@NonNull View page, float position) {
        // a->b : a : position ,(0,-1)  b: position ,(1,0)
        // b->a : a: position ,(-1,0) b: position ,(0,1)
        if(position < -1){
            page.setRotation(-MAX_ROTATE); //向下为负
            page.setPivotY(page.getHeight());
            page.setPivotX(page.getWidth());


        }else if(position <= 1){
            //左边的界面
            if(position < 0){

                page.setPivotY(page.getHeight()); //y的高度跟随变化
                //0.5w,w 旋转中心的变化
                page.setPivotX(0.5f*page.getWidth()+0.5f*(-position)*page.getWidth());
                //(0,1) -> 0, max
                page.setRotation(MAX_ROTATE*position);


            }else{ //the right page
                page.setPivotY(page.getHeight()); //y的高度跟随变化
                //0,0.5w X中心变化
                page.setPivotX(page.getWidth()*0.5f*(1 -position));
                page.setRotation(MAX_ROTATE*position);
            }
        }else {
            page.setRotation(MAX_ROTATE); //向上为正
            page.setPivotY(page.getHeight());
            page.setPivotX(0);
        }

    }
}
